#!/bin/sh

MOD_NAME=dhcp_relay
MOD_EXEC_NAME=iface_watcher
MOD_EXEC="/opt/$MOD_NAME/bin/$MOD_EXEC_NAME"
MOD_DEFAULTS="/opt/$MOD_NAME/etc/defaults"
MOD_SETTINGS="/opt/$MOD_NAME/etc/settings"
MOD_VAR_DIR="/var/$MOD_NAME"

RELAY_MAX=6

case "$1" in
  start)
    . $MOD_SETTINGS
    mkdir -p $MOD_VAR_DIR/run
    echo -n "Starting module $MOD_NAME: "
    if [ "$MOD_DR_ENABLED_GLOBAL" != "1" ]; then
      echo "skipped"
      exit 0
    fi
    i=0
    while [ $i -lt $RELAY_MAX ]; do
      i=$((i+1))
      eval ENABLED='$'MOD_DR_ENABLED$i
      if [ "$ENABLED" = "1" ]; then
        eval PID='$'MOD_VAR_DIR/run/dnsmasq_relay$i.pid
        eval LOCAL_IF='$'MOD_DR_LOCAL_INTERFACE$i
        eval LOCAL_IPADDR='$'MOD_DR_LOCAL_IPADDR$i
        eval OUTGOING_IF='$'MOD_DR_OUTGOING_INTERFACE$i
        eval DHCP_SERVER_IPADDR='$'MOD_DR_DHCP_SERVER_IPADDR$i
        $MOD_EXEC -i $LOCAL_IF -o $OUTGOING_IF -l $LOCAL_IPADDR -d $DHCP_SERVER_IPADDR -p $PID -s $MOD_VAR_DIR/status$i &
      fi
    done
    echo "done"
    exit 0
    ;;
  stop)
    echo -n "Stoping module $MOD_NAME: "
    killall $MOD_EXEC_NAME 2>/dev/null
    rm -rf $MOD_VAR_DIR
    echo "done"
    exit 0
    ;;
  restart)
    $0 stop $2
    sleep 1
    $0 start $2
    ;;
  status)
    i=0
    while [ $i -lt $RELAY_MAX ]; do
      i=$((i+1))
      echo -n "DHCP Relay Service $i : "
      eval PID='$'MOD_VAR_DIR/run/dnsmasq_relay$i.pid
      if [ -f $PID ]; then
        echo "Running"
        eval STATUS='$'MOD_VAR_DIR/status$i
        cat $STATUS | grep -v compile
      else
        echo "Stopped"
      fi
      echo ""
    done
    exit 0
    ;;
  defaults)
    cp $MOD_DEFAULTS $MOD_SETTINGS 2>/dev/null
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status|defaults}"
    exit 1
esac
